import axios from "axios";
import { Message } from "element-ui";
import { getTiemStamp } from './auth'
import store from "@/store";
import router from '@/router'


// 定义超时时间(一般超过2小时token超时)
const TimeOut = 2 * 60 * 60 * 1000


const service = axios.create({
    baseURL: 'http://124.222.107.144:4020', // url = base url + request url
})

// 添加请求拦截器
service.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    // 首先判断是否有token
    // console.log('111111111111', store.getters.token)
    if (store.getters.token) {
        if (checkTimeout()) {
            // 超时了，表示token过期，退出登录，跳转页面
            // console.log('6666666666666666')
            store.commit('user/logOut')
            router.push('login')
        }
        config.headers['token'] = store.getters.token
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
service.interceptors.response.use(function (response) {
    const { code, message, data } = response.data
    if (code == '200') {
        return data
    } else {
        // 业务已经失败，应该进入catch'
        Message.error(message) //提示错误消息
        if (message === '登录已过期，请重新登录') {
            store.commit('user/logOut')
            router.push('login')
        }
        return Promise.reject(new Error(message))
    }

}, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    Message.error(error.message)
    return Promise.reject(error);
});


// 判断是否超时
function checkTimeout() {
    // 当前时间
    var currentTime = Date.now()
    var tiemStamp = getTiemStamp()
    // console.log(currentTime - tiemStamp)
    return (currentTime - tiemStamp) > TimeOut
}

export default service